package com.gdust.hzx.manager.mapper;

import com.gdust.hzx.model.dto.product.ProductDto;
import com.gdust.hzx.model.entity.product.Product;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * ClassName: ProductMapper
 * Package: com.gdust.spzx.manager.mapper
 * Description:
 * 商品数据访问层接口，定义对商品表的常用操作。
 *
 * 主要功能：
 * - 支持分页查询商品数据
 * - 保存商品基本信息
 * - 根据 ID 查询商品详情
 * - 更新商品信息
 * - 根据 ID 删除商品数据
 *
 * @Author syun
 * @Create 2024/12/22 17:12
 * @Version 1.0
 */
@Mapper
public interface ProductMapper {
    /**
     * 根据产品搜索条件进行分页查询商品数据。
     *
     * @param productDto 商品搜索条件封装对象
     *                   包含分页信息和筛选条件，如商品名称、分类等。
     * @return 符合条件的商品列表
     */
    List<Product> findByPage(ProductDto productDto);

    /**
     * 保存商品基本信息到数据库。
     *
     * @param product 商品对象
     *                包含商品的名称、价格、描述等基本信息。
     */
    void save(Product product);

    /**
     * 根据商品 ID 查询商品的基本信息。
     *
     * @param id 商品的唯一标识 ID
     * @return 查询到的商品对象
     */
    Product findProductById(Long id);

    /**
     * 更新商品表中的商品信息。
     *
     * @param product 商品对象
     *                包含需要更新的数据，例如价格、库存、描述等。
     */
    void updateById(Product product);

    /**
     * 根据商品 ID 删除商品表中的记录。
     *
     * @param id 商品的唯一标识 ID
     */
    void deleteById(Long id);
}
